package com.falm.picturebackend.common;

import com.falm.picturebackend.exception.ErrorCode;

/**
 * 响应结果工具类
 */
public class ResultUtils {

    /**
     * 成功
     * @param data  数据
     * @return BaseResponse
     * @param <T> 数据类型
     */
    public static <T> BaseResponse<T> success(T data) {
        return new BaseResponse<>(data);
    }

    /**
     * 成功
     * @param code 错误码
     * @param message 错误信息
     * @param data  数据
     * @return BaseResponse
     * @param <T> 数据类型
     */
    public static <T> BaseResponse<T> success(String code, String message, T data) {
        return new BaseResponse<>(code, message, data);
    }

    /**
     * 成功
     * @return BaseResponse
     * @param <T> 数据类型
     */
    public static <T> BaseResponse<T> success() {
        return success(null);
    }

    /**
     * 成功
     * @param errorCode 错误信息
     * @param data  数据
     * @return BaseResponse
     * @param <T> 数据类型
     */
    public static <T> BaseResponse<T> success(ErrorCode errorCode, T data) {
        return new BaseResponse<>(errorCode.getCode(), errorCode.getMessage(), data);
    }

    /**
     * 失败
     * @param errorCode 错误码
     * @return BaseResponse
     * @param <T> 数据类型
     */
    public static <T> BaseResponse<T> error(ErrorCode errorCode) {
        return new BaseResponse<>(errorCode.getCode());
    }

    /**
     * 失败
     * @param errorCode 错误码
     * @param message 错误信息
     * @return BaseResponse
     * @param <T> 数据类型
     */
    public static <T> BaseResponse<T> error(ErrorCode errorCode, String message) {
        return new BaseResponse<>(errorCode.getCode(), message);
    }

    /**
     * 失败
     * @param code 错误码
     * @param message 错误信息
     * @return  BaseResponse
     * @param <T> 数据类型
     */
    public static <T> BaseResponse<T> error(String code, String message) {
        return new BaseResponse<>(code, message);
    }

}
